package com.dianxin.smartpark.service.common;

import java.util.List;

import com.chinatelecom.response.common.CommonResponseBody;
import com.dianxin.smartpark.dao.qo.common.SmartParkUserConfigQO;
import com.dianxin.smartpark.service.validation.Delete;
import com.dianxin.smartpark.service.validation.Save;
import com.dianxin.smartpark.service.validation.Update;
import com.dianxin.smartpark.service.vo.common.DevicePullDataVo;
import com.dianxin.smartpark.service.vo.common.SmartParkUserCardVO;
import com.dianxin.smartpark.service.vo.common.SmartParkUserConfigVO;
import com.dianxin.smartpark.service.vo.common.SmartParkUserTzVO;
import org.springframework.scheduling.annotation.Async;
import org.springframework.validation.annotation.Validated;

/**
 * 用户凭证接口
 * 
 * @author chenjiasong
 * @date 2021-08-10
 */
public interface SmartParkUserConfigService
{
    /**
     * 查询用户凭证
     * 
     * @param smartParkUserConfigqo 用户凭证
     * @return 用户凭证
     */
    CommonResponseBody<SmartParkUserConfigVO> selectSmartParkUserConfig(SmartParkUserConfigQO smartParkUserConfigqo);

    /**
     * 查询用户凭证列表
     *
     * @param smartParkUserConfigqo 用户凭证
     * @return 用户凭证集合
     */
    CommonResponseBody<List<SmartParkUserConfigVO>> selectSmartParkUserConfigList(SmartParkUserConfigQO smartParkUserConfigqo);

    /**
     * 查询用户凭证列表
     *
     * @param vo 用户凭证
     * @return 用户凭证集合
     */
    CommonResponseBody<List<SmartParkUserTzVO>> selectUserDetailList(DevicePullDataVo vo) throws Exception;

    /**
     * 查询用户凭证列表
     *
     * @param vo 用户凭证
     * @return 用户凭证集合
     */
    CommonResponseBody<List<SmartParkUserCardVO>> selectUserCardDetailList(DevicePullDataVo vo) throws Exception;

    /**
     * 查询用户凭证列表
     *
     * @param vo 用户凭证
     * @return 用户凭证集合
     */
    CommonResponseBody<SmartParkUserCardVO> selectUserCardDetailListByCard(DevicePullDataVo vo) throws Exception;

    /**
     * 新增用户凭证
     * 
     * @param smartParkUserConfigvo 用户凭证
     * @return 结果
     */
    @Validated(Save.class)
    CommonResponseBody<Boolean> insertSmartParkUserConfig(SmartParkUserConfigVO smartParkUserConfigvo) throws Exception;

    /**
     * 修改用户凭证
     * 
     * @param smartParkUserConfigvo 用户凭证
     * @return 结果
     */
    @Validated(Update.class)
    CommonResponseBody<Boolean> updateSmartParkUserConfig(SmartParkUserConfigVO smartParkUserConfigvo) throws Exception;

    /**
     * 删除用户凭证信息
     * 
     * @param vo 用户凭证
     * @return 结果
     */
    @Validated(Delete.class)
    CommonResponseBody<Boolean> deleteSmartParkUserConfig(SmartParkUserConfigVO vo);
}
